﻿using System;
namespace Producers.Kis.Xtee.Riik.Ee.Producer.Kis {
    
    
    public partial class Person : global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.IPerson {
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.Gender @__gender;
        
        private string @__personalIDCode;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.DateTimeString @__timeOfBirth;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @__givenName;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @__surName;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.Description @__popRegData;
        
        public Person() {
        }
        
        /// <summary>
        /// All parameters
        /// </summary>
        public Person(global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.Gender @gender, string @personalIDCode, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.DateTimeString @timeOfBirth, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @givenName, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @surName, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.Description @popRegData) {
            this.@__gender = @gender;
            this.@__personalIDCode = @personalIDCode;
            this.@__timeOfBirth = @timeOfBirth;
            this.@__givenName = @givenName;
            this.@__surName = @surName;
            this.@__popRegData = @popRegData;
        }
        
        /// <summary>
        /// Required parameters
        /// </summary>
        public Person(global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.Gender @gender, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @givenName, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @surName) {
            this.@__gender = @gender;
            this.@__givenName = @givenName;
            this.@__surName = @surName;
        }
        
        /// <summary>
        /// Copy Constructor
        /// </summary>
        protected Person(IPerson @person) {
            this.@__gender = @person.Gender;
            this.@__personalIDCode = @person.PersonalIDCode;
            this.@__timeOfBirth = @person.TimeOfBirth;
            this.@__givenName = @person.GivenName;
            this.@__surName = @person.SurName;
            this.@__popRegData = @person.PopRegData;
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.Gender Gender {
            get {
                return this.@__gender;
            }
            set {
                this.@__gender = value;
            }
        }
        
        public virtual string PersonalIDCode {
            get {
                return this.@__personalIDCode;
            }
            set {
                this.@__personalIDCode = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.DateTimeString TimeOfBirth {
            get {
                return this.@__timeOfBirth;
            }
            set {
                this.@__timeOfBirth = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString GivenName {
            get {
                return this.@__givenName;
            }
            set {
                this.@__givenName = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString SurName {
            get {
                return this.@__surName;
            }
            set {
                this.@__surName = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.Description PopRegData {
            get {
                return this.@__popRegData;
            }
            set {
                this.@__popRegData = value;
            }
        }
    }
}
